/**
 * 获取用户信息
 */
 (function ({ UID }, headers) {
  // 验证用户
  if (!UID) throw Error("无效会话");

  let user = A.card('B.用户').load(UID);
  if (!user) throw Error("用户不存在");
  delete user.密码;

  user.角色 = A.job.CardR(UID, 'B.用户角色', ['用户', '角色', '角色.名称', '角色.子系统'], {
    Filter: [['用户', '=', UID]]
  }).Rows.map(r => ({
    ID: r.角色,
    "名称": r['角色.名称'],
    "子系统": r['角色.子系统'],
  }));

  user.机构 = A.job.CardR(UID, 'B.用户机构', ['用户', '机构', '机构.名称', '机构.编码', '机构.名称路径', '机构.ID路径', '机构.归属公司', '机构.归属公司.名称', '机构.归属公司.编码'], {
    Filter: [['用户', '=', UID]]
  }).Rows.map(r => ({
    ID: r.机构,
    "名称": r['机构.名称'],
    "编码": r['机构.编码'],
    "名称路径": r['机构.名称路径'],
    "ID路径": r['机构.ID路径'],
    "归属公司": r['机构.归属公司'],
    "归属公司.名称": r['机构.归属公司.名称'],
    "归属公司.编码": r['机构.归属公司.编码'],
  }));

  user.岗位 = A.job.CardR(UID, 'B.用户岗位', ['用户', '岗位', '岗位.名称', '岗位.编码', '岗位.部门'], {
    Filter: [['用户', '=', UID]]
  }).Rows.map(r => ({
    ID: r.岗位,
    "名称": r['岗位.名称'],
    "编码": r['岗位.编码'],
    "部门": r['岗位.部门'],
  }));

  let { rows } = A.db.execute(A.card('B.用户').连接名称, "SELECT B.ZXT_ID FROM B_YHJS A, B_JSCD B WHERE A.JS_ID=B.JS_ID AND A.YH_ID=? UNION SELECT B.ZXT_ID FROM B_YHJG A, B_JGCD B WHERE A.JG_ID=B.JG_ID AND A.YH_ID=? UNION SELECT B.ZXT_ID FROM B_YHGW A, B_GWCD B WHERE A.GW_ID=B.GW_ID AND A.YH_ID=? UNION SELECT B.ZXT_ID FROM B_YHZW A, B_ZWCD B WHERE A.ZW_ID=B.ZW_ID AND A.YH_ID=?", [UID, UID, UID, UID]);
  user.子系统 = A.job.CardR(UID, '子系统', ['名称', '简称', '缩写', '序号', '首页页面'], {
    Filter: [['ID', 'in', rows.map(r => r.ZXT_ID)]],
    Order: { '序号': 'desc' }
  }).Rows;

  return user;
});